package main

import (
	"context"
	"fmt"
	"io"
	"log"
	"os"
	client_stream "send_file/grpc_proto/client_stream"

	"google.golang.org/grpc"
)

func main() {
	addr := ":8080"
	//使用grpc.Dial 创建一个到指定的地址的 grpc 连接
	conn, err := grpc.Dial(addr, grpc.WithInsecure())
	if err != nil {
		log.Fatalf(fmt.Sprintf("grpc connect adddr[%s] failed,err:%v", addr, err))
	}

	defer conn.Close()

	// 初始化客户端
	client := client_stream.NewClientStreamClient(conn)

	stream, err := client.UploadFile(context.Background())
	if err != nil {
		log.Fatalln(err)
	}

	file, err := os.Open("2.jpg")
	if err != nil {
		log.Fatalln(err)
	}
	defer file.Close()

	for {
		buf := make([]byte, 1024)
		_, err := file.Read(buf)
		if err == io.EOF {
			break
		}

		if err != nil {
			break
		}

		stream.Send(&client_stream.FileRequest{
			Content: buf,
		})
	}

	// 全部上传完成后，在这里告知服务端发送结束了，并接收服务端的响应
	resp, err := stream.CloseAndRecv()
	fmt.Println(resp, err)

}
